home *** CD-ROM | disk | FTP | other *** search
/ Amiga Collections: Taifun / Taifun 040 (1987-11-15)(Ossowski, Stefan)(DE)(PD).zip / Taifun 040 (1987-11-15)(Ossowski, Stefan)(DE)(PD).adf / A68k / A68kdef.h < prev    next >
Text File  |  1989-01-18  |  7KB  |  197 lines

  1. /*------------------------------------------------------------------*/
  2. /*                                    */
  3. /*              MC68000 Cross Assembler                */
  4. /*                                    */
  5. /*           Copyright (c) 1985 by Brian R. Anderson            */
  6. /*                                    */
  7. /*          #define statements - May 31, 1987            */
  8. /*                                    */
  9. /*   This program may be copied    for personal, non-commercial use    */
  10. /*   only, provided that the above copyright notice is included        */
  11. /*   on    all copies of the source code.    Copying    for any    other use   */
  12. /*   without the consent of the    author is prohibited.            */
  13. /*                                    */
  14. /*------------------------------------------------------------------*/
  15. /*                                    */
  16. /*        Originally published (in Modula-2) in            */
  17. /*        Dr.    Dobb's Journal, April, May, and June 1986.          */
  18. /*                                    */
  19. /*    AmigaDOS conversion copyright (c) 1987 by Charlie Gibbs.    */
  20. /*                                    */
  21. /*------------------------------------------------------------------*/
  22.  
  23. #define    TRUE  1
  24. #define    FALSE 0
  25.  
  26. /* Assembler configuration parameters */
  27. #define    MAXLINE     128    /* Longest source line */
  28. #define    MAXFN     41    /* Maximum length of file name */
  29. #define    MAXSREC     16    /* Maximum S-record data length    */
  30. #define    MAXREF     4    /* Number of line numbers in reference entry */
  31. #define    DEFHEAP     32768    /* Default size    for main heap */
  32. #define    DEFHEAP2 1024    /* Default size    for secondary heap */
  33. #define    ObjMAX     30    /* Max.    hex object code    digits in listing */
  34.  
  35. /* Hunk    number definitions */
  36. #define    HunkNone 0    /* Not in a hunk */
  37. #define    HunkUnit 999
  38. #define    HunkName 1000
  39. #define    HunkCode 1001
  40. #define    HunkData 1002
  41. #define    HunkBSS     1003
  42. #define    HunkR32     1004
  43. #define    HunkR16     1005
  44. #define    HunkR8     1006
  45. #define    HunkExt     1007
  46. #define    HunkSym     1008
  47. #define    HunkDbg     1009
  48. #define    HunkEnd     1010
  49.  
  50. #define    MEMF_FAST 0x80000000L    /* Hunk    must load in FAST memory */
  51. #define    MEMF_CHIP 0x40000000L    /* Hunk    must load in CHIP memory */
  52.  
  53. /* Hunk    numbers    denoting special symbol    attributes */
  54. #define    ABSHUNK    32767    /* Absolute */
  55.  
  56. /* Addressing mode flag    values */
  57. #define    DReg   1   /* Data Register */
  58. #define    ARDir  2   /* Address Register Direct */
  59. #define    ARInd  3   /* Address Register Indirect    */
  60. #define    ARPost 4   /* Address Register with Post-Increment */
  61. #define    ARPre  5   /* Address Register with Pre-Decrement */
  62. #define    ARDisp 6   /* Address Register with Displacement */
  63. #define    ARDisX 7   /* Address Register with Disp. & Index */
  64. #define    AbsW   8   /* Absolute Short (16-bit Address) */
  65. #define    AbsL   9   /* Absolute Long (32-bit Address) */
  66. #define    PCDisp 10  /* Program Counter Relative,    with Displacement */
  67. #define    PCDisX 11  /* Program Counter Relative,    with Disp. & Index */
  68. #define    Imm    12  /* Immediate    */
  69. #define    MultiM 13  /* Multiple Register    Move */
  70. #define    SR     14  /* Status Register */
  71. #define    CCR    15  /* Condition    Code Register */
  72. #define    USP    16  /* User's Stack Pointer */
  73. #define    Null   0   /* Error Condition, or Operand missing */
  74.  
  75. #define    X0   0       /* Register types */
  76. #define    Dreg 1
  77. #define    Areg 2
  78.  
  79. #define    S0   0       /* Size types */
  80. #define    Byte 1
  81. #define    Word 2
  82. #define    S3   3
  83. #define    Long 4
  84.  
  85. #define    JMP   0x4EC0
  86. #define    JSR   0x4E80
  87. #define    STOP  0x4E72
  88. #define    LINK  0x4E50
  89. #define    SWAP  0x4840
  90. #define    UNLK  0x4E58
  91. #define    NOP   0x4E71
  92. #define    CMPM  0xB108
  93.  
  94. #define    None     0    /* Assembler directives    */
  95. #define    Org     1
  96. #define    Equ     2
  97. #define    DC     3
  98. #define    DS     4
  99. #define    Even     5
  100. #define    End     6
  101. #define    Xdef     7
  102. #define    Xref     8
  103. #define    Page     9
  104. #define    DoList    10
  105. #define    NoList    11
  106. #define    Space    12
  107. #define    Title    13
  108. #define    Cnop    14
  109. #define    Include    15
  110. #define    Set    16
  111. #define    Macro    17
  112. #define    If    18
  113. #define    EndC    19
  114. #define    MacCall    20
  115. #define    Section    21
  116. #define    Idnt    22
  117. #define    DCB    23
  118. #define    Equr    24
  119. #define    Reg    25
  120.  
  121. /* BITSETs of the modes    MISSING    from effective address modes  */
  122. #define     ea 0x0000   /*    Effective addressing - all modes */
  123. #define    dea 0x0002   /*    Data effective addressing     */
  124. #define    mea 0x0003   /*    Memory effective addressing     */
  125. #define    cea 0x081B   /*    Control    effective addressing     */
  126. #define    aea 0x0E00   /*    Alterable effective addressing     */
  127. #define    xxx 0xE000   /*    extra modes: CCR/SR/USP         */
  128.  
  129. #define    IN &        /* Simulated BITSET test */
  130.  
  131. /* AdrModeA bit    definitions */
  132. #define    RegMem3    0x0001    /* 0 = register, 1 = memory */
  133. #define    Ry02    0x0002    /* Register Rx - bits 0-2 */
  134. #define    Rx911    0x0004    /* Register Ry - bits 9-11 */
  135. #define    Data911    0x0008    /* Immediate data - bits 9-11 */
  136. #define    CntR911    0x0010    /* Count register or immediate data */
  137. #define    Brnch    0x0020    /* Relative branch */
  138. #define    DecBr    0x0040    /* Decrement and branch    */
  139. #define    Data03    0x0080    /* TRAP    vector in 0-3 */
  140. #define    Data07    0x0100    /* Data    in 0-7 (MOVEQ) */
  141. #define    OpM68D    0x0200    /* Data    register in 6-8    */
  142. #define    OpM68A    0x0400    /* Address register in 6-8 (ADDA/CMPA/SUBA) */
  143. #define    OpM68C    0x0800    /* CMP (Compare) */
  144. #define    OpM68X    0x1000    /* EOR (Exclusive or) */
  145. #define    OpM68S    0x2000    /* EXT (Sign extension)    */
  146. #define    OpM68R    0x4000    /* MOVEP (Register/memory) */
  147. #define    OpM37    0x8000    /* EXG (Exchange registers) */
  148. #define    TwoOpsA    0xDF4D    /* Two operands    are required */
  149.  
  150. /* AdrModeB bit    definitions */
  151. #define    Bit811    0x0001    /* Bit operations - bits 8-11 as switch    */
  152. #define    Size67    0x0002    /* 00 =    byte, 01 = word, 10 = long */
  153. #define    Size6    0x0004    /* 0 = word, 1 = long */
  154. #define    Sz1213A    0x0008    /* 01 =    byte, 11 = word, 10 = long */
  155. #define    Sz1213    0x0010    /* 11 =    word, 10 = long    */
  156. #define    Exten    0x0020    /* Opcode extension is required    */
  157. #define    EA05a    0x0040    /* Effective address - all */
  158. #define    EA05b    0x0080    /* All except ARDir */
  159. #define    EA05c    0x0100    /* All except ARDIR and    Imm */
  160. #define    EA05d    0x0200    /* All except PCDisp, PCDisx, and Imm */
  161. #define    EA05e    0x0400    /* All except ARDir, PCDisp, PCDisx, and Imm */
  162. #define    EA05f    0x0800    /* All except Dreg, ARDir, ARPost, ARPre, Imm */
  163. #define    EA05x    0x1000    /* Dual    mode - AND/OR */
  164. #define    EA05y    0x2000    /* Dual    mode - ADD/SUB */
  165. #define    EA05z    0x4000    /* Dual    mode - MOVEM */
  166. #define    EA611    0x8000    /* Eff.    Adr. in    6-11 (used only    by MOVE) */
  167. #define    TwoOpsB    0xF3DD    /* Two operands    are required */
  168. #define    ImmMode    0x0422    /* Immediate instructions */
  169.  
  170. #define    Dummy     0    /* Error codes */
  171. #define    TooLong     1
  172. #define    NoCode     2
  173. #define    SymDup     3
  174. #define    Undef     4
  175. #define    ModeErr     5
  176. #define    OperErr     6
  177. #define    BraErr     7
  178. #define    AddrErr     8
  179. #define    SizeErr     9
  180. #define    EndErr     10
  181. #define    AbsReq     11
  182. #define    RelErr     12
  183. #define    ManyIncl 13
  184. #define    NoIncl     14
  185. #define    FwdRef     15
  186. #define    NotSFmt     16
  187. #define    NeedLab     17
  188. #define    Phase     18
  189. #define    NoENDM     19
  190. #define    DCOflo     20
  191. #define    ManySect 21
  192. #define    NoSecNam 22
  193. #define    WrongTyp 23
  194. #define    DupMac     24
  195.  
  196. #define    ERRMAX 10    /* Size    of error message table */
  197.